#ifndef __RGBASLIDER_H__
#define __RGBASLIDER_H__

class CEGUI::Slider;
class CEGUI::PushButton;
class CEGUI::StaticText;
class CEGUI::Window;

class RGBASlider
{
public:
	CEGUI::Slider * m_r;
	CEGUI::Slider * m_g;
	CEGUI::Slider * m_b;
	CEGUI::StaticText * m_value;
	CEGUI::Window * m_window;
	Ogre::Vector4 m_vector;
	Real m_min;
	Real m_max;

public:
	RGBASlider(void);
	RGBASlider(String const &name, CEGUI::Window *parent, Ogre::Vector4 const vector = Vector4::ZERO, CEGUI::Point const position = CEGUI::Point(0, 0), CEGUI::Size const size = CEGUI::Size(1, 1));
	~RGBASlider(void);
	void updateSlider(Vector3 const value);
	void updateSlider(Vector4 const value);
	void updateSlider(ColourValue const value);
	bool isActive(void);
	bool handleSliderEvent(const CEGUI::EventArgs& e);
	void setVisible(bool const visible);
	bool isVisible(void);
	void create(String const &name, CEGUI::Window *parent, Ogre::Vector4 const vector = Vector4::ZERO, CEGUI::Point const position = CEGUI::Point(0, 0), CEGUI::Size const size = CEGUI::Size(1, 1));
	void setMin(Real const val);
	void setMax(Real const val);
	void setMinMax(Real const val);
	Vector4 getValue(void);
	Vector3 getValueVector3(void);
	ColourValue getValueColour(void);
};

#endif //__RGBSLIDER_H__